package com.sicheng.algorithm.string;

import java.util.Arrays;

/**
 * @author zsc
 * @version 1.0
 * @date 2021/9/19 16:27
 */
public class PrintMinNumber {
    public static void main(String[] args) {

        System.out.println(printMinNumber(new int[]{3, 32, 321}));
    }

    /**
     * 输入一个正整数数组，把数组里所有数字拼接起来排成一个数.
     * 打印能拼接出的所有数字中最小的一个.
     * 例如输入数组 {3，32，321}.
     * 则打印出这三个数字能排成的最小数字为 321323.
     */
    public static String printMinNumber(int[] numbers) {
        if (numbers == null || numbers.length == 0)
            return "";

        String[] nums = Arrays.stream(numbers)
                .mapToObj(String::valueOf)
                .sorted((s1, s2) -> (s1 + s2).compareTo(s2 + s1))
                .toArray(String[]::new);

        StringBuilder builder = new StringBuilder();
        for (String num : nums) {
            builder.append(num);
        }

        return builder.toString();
    }

}
